"Critter"
By Brett Bilbrey and The Bit Fiddlers.
ARCADIAN 3 no. 2 (December 5, 1980): 13. (No explanation)
CURSOR 2 no. 3 (October 1980): 66-67. (With explanation)
"Machine Language Manager" manual, page 7-2. (MLM Version)


Included are the complete "Critter" instructions from "Cursor" newsletter.  
These are followed by additional information.


Instructions from "Cursor:"

This program will place a space invader type "CRITTER" on the screen that will 
bounce from top to bottom and side to side without disturbing anything that is 
already on-screen. This "CRITTER" will run independent of anything else you 
wish to do. If you press "HALT", he won't! His speed is controlled by Hand 
Control Knob #1.

After you have "RUN" this program, do not scroll to bottom line! Use "CY=40" to 
keep any text away from the area in the bottom of the screen that is 
"twinkling" (also, do not use "CLEAR").

Once the Basic program has been "RUN", it can be erased and replaced with 
whatever you want. Use ":RETURN" to stop the routine, and "CALL 19584" to start 
it up again. One problem is when BASIC tries to print on top of the "Critter", 
small screen glitches appear. You can create an invisible screen by altering 
the value of Port 15(&(15) Interrupt Line Port), it is set to 99 which is 
minimum size of invisible screen. The Interrupt Line Port determines the number 
of lines scanned before the next interrupt (for a complete explanation of all 
the interrupt ports etc., refer to CURSOR "PEEK n' POKE" manual).

To give you an example of a use for this type of routine, input the following 
line after you have "RUN" the program: key-in ":RETURN" and hit "GO" before you 
key in the line:

1 CALL 19584;&(15)=99;INPUT A;:RETURN ; STOP

As you know, when the computer hits an "INPUT" command, it will just sit there, 
waiting for you to give it a value, it will not allow anything else to happen 
until you key in a value. With this one line program, it will start the 
"Critter" bouncing around the screen as soon as it hits the input line and will 
stop the "Critter" as soon as you input a value.

So what you ask? Well, instead of having a "Critter", we could have a clock 
decrementing from one minute. If you don't get your answer into the computer 
before the clock hits zero, you lose your turn and control switches to the next 
player. This would provide for truly sophisticated software. So, don't lose 
heart, we are on the opening stages of an exciting software era.


Brett notes that he received a great deal of help from Tom Wood, Dave Ibach, 
and John Perkins, without whose help he doubts he could have written this 
program.


                   ----------------------------------------


"Critter" is based upon a machine language program for the Blue Ram that 
required extra RAM installed at $6000.  That unnamed machine language program 
is part of a tutorial that is by John Perkins called "Fast Action Graphics."  
It appeared in ARCADIAN 2, no. 10 (Sep. 17, 1980): 101-102.  The assembly 
source code for that program was derived from the hexadecimal listing and 
explanation of the program.  It is available here:

http://www.ballyalley.com/ml/ml_homebrew/fastactn.asm

The 300-Baud Blue Ram program, called "Fast Action Graphics (Vector Animator)," 
can be downloaded here:

http://www.ballyalley.com/program_downloads/ram_expansion_required/Fast%20Actio
n%20Graphics%20(Vector%20Animator)%20(1980)(John%20Perkins)(300%20baud)(PD).zip

"Critter" is a machine language program that uses the Bally's Vector motion 
routines. This version of the program is for use with Bally BASIC only; it is 
not compatible with AstroBASIC.

An article was written by Adam Trionfo on how this machine language program was 
converted from Bally BASIC to AstroBASIC.  The article is called "Critter 2000! 
How 'Critter' by Brett Bilbrey was modified to run in AstroBASIC."  It is 
available here:

http://www.ballyalley.com/program_downloads/2000_baud_programs/misc/Critter%20(
Brett%20Bilbrey)(AstroBASIC)/Critter%20Conversion%20Article%20(Adam%20Trionfo).
txt

